package club.babyf.nativeai.demo.algorithm;

import java.util.ArrayList;
import java.util.List;

/**
 * _15_SortedArrayIntersection.
 *
 * @author zhanglei.
 * @date 2025/6/22 22:50.
 * @description 计算两个有序数组的交集.
 */
public class _15_SortedArrayIntersection {

    public static List<Integer> intersection(int[] nums1, int[] nums2) {
        List<Integer> result = new ArrayList<>();
        int i = 0, j = 0;
        while (i < nums1.length && j < nums2.length) {
            if (nums1[i] == nums2[j]) {
                // 找到交集元素，加入结果
                result.add(nums1[i]);
                // 跳过重复元素
                int current = nums1[i];
                while (i < nums1.length && nums1[i] == current) i++;
                while (j < nums2.length && nums2[j] == current) j++;
            } else if (nums1[i] < nums2[j]) {
                // 移动较小元素的指针
                i++;
            } else {
                // 移动较小元素的指针
                j++;
            }
        }
        return result;
    }

    public static void main(String[] args) {
        // 示例测试
        int[] arr1 = {1, 2, 2, 3, 4};
        int[] arr2 = {2, 2, 3, 5};
        // 输出: [2, 3]
        System.out.println(intersection(arr1, arr2));
    }

}
